]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
st-private: Don't create attr lists if we don't need them
authorJasper St. Pierre <jstpierre@mecheye.net>
Sat, 1 Dec 2012 01:27:27 +0000 (20:27 -0500)
committerJasper St. Pierre <jstpierre@mecheye.net>
Mon, 3 Dec 2012 01:11:10 +0000 (20:11 -0500)
Decorations are fairly uncommon in gnome-shell, so it's
worthwhile to avoid effort creating empty attr lists. This
can also help prevent a relayout.

https://bugzilla.gnome.org/show_bug.cgi?id=689400

src/st/st-private.c

index bab1d3c31db5e651f85491d4e78a471b5a3d119c..cd4e52ac23dfbcf6e98eca2f4b7fa525d7aa47b6 100644 (file)
@@ -173,7 +173,7 @@ _st_set_text_from_style (ClutterText *text,
 
   ClutterColor color;
   StTextDecoration decoration;
-  PangoAttrList *attribs;
+  PangoAttrList *attribs = NULL;
   const PangoFontDescription *font;
   gchar *font_string;
   StTextAlign align;
@@ -186,26 +186,30 @@ _st_set_text_from_style (ClutterText *text,
   clutter_text_set_font_name (text, font_string);
   g_free (font_string);
 
-  attribs = pango_attr_list_new ();
-
   decoration = st_theme_node_get_text_decoration (theme_node);
-  if (decoration & ST_TEXT_DECORATION_UNDERLINE)
-    {
-      PangoAttribute *underline = pango_attr_underline_new (PANGO_UNDERLINE_SINGLE);
-      pango_attr_list_insert (attribs, underline);
-    }
-  if (decoration & ST_TEXT_DECORATION_LINE_THROUGH)
+  if (decoration)
     {
-      PangoAttribute *strikethrough = pango_attr_strikethrough_new (TRUE);
-      pango_attr_list_insert (attribs, strikethrough);
+      attribs = pango_attr_list_new ();
+
+      if (decoration & ST_TEXT_DECORATION_UNDERLINE)
+        {
+          PangoAttribute *underline = pango_attr_underline_new (PANGO_UNDERLINE_SINGLE);
+          pango_attr_list_insert (attribs, underline);
+        }
+      if (decoration & ST_TEXT_DECORATION_LINE_THROUGH)
+        {
+          PangoAttribute *strikethrough = pango_attr_strikethrough_new (TRUE);
+          pango_attr_list_insert (attribs, strikethrough);
+        }
+      /* Pango doesn't have an equivalent attribute for _OVERLINE, and we deliberately
+       * skip BLINK (for now...)
+       */
     }
-  /* Pango doesn't have an equivalent attribute for _OVERLINE, and we deliberately
-   * skip BLINK (for now...)
-   */
 
   clutter_text_set_attributes (text, attribs);
 
-  pango_attr_list_unref (attribs);
+  if (attribs)
+    pango_attr_list_unref (attribs);
 
   align = st_theme_node_get_text_align (theme_node);
   if(align == ST_TEXT_ALIGN_JUSTIFY) {